home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Fabian Filipczyk (<link>FFJaro@gmx.de</link>) Title=OFDb Description=Online-Filmdatenbank (OFDb) import with small picture (DE) Site=http://www.ofdb.de Language=DE Version= Requires=3.5.0 Comments= License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program OFDB_DE; var MovieName: string; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; /////////////////////////////////////////////////////////////////// procedure AnalyzePage(Address: string); var Page: TStringList; LineNr: Integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); // if pos('<title>OFDb - Suchergebnis', Page.Text) = 0 then if pos('<title>OFDb - Übersicht der Filmdaten</title>', Page.Text) > 0 then begin SetField(fieldURL, Address); AnalyzeMoviePage(Page) end else begin PickTreeClear; LineNr := FindLine('<b>Titel:</b>', Page, 0); if LineNr > 0 then begin PickTreeAdd('Filme :', ''); AddMoviesTitles(Page, LineNr); if PickTreeExec(Address) then AnalyzePage(Address); end; end; Page.Free; end; procedure AnalyzeMoviePage(Page: TStringList); var TomString, Line, Temp, Value: string; LineNr, IntValue: Integer; BeginPos, EndPos: Integer; begin // Picture //LineNr := FindLine('http://www.hsi-infopool.de/zensur/movies/images/film', Page, 0); //http://www.ofdb.de/ //http://www.ofdb.de/images/film/0/179.jpg //images/film/0/179.jpg LineNr := FindLine('images/film/', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('<img src="', Line) + 10; // BeginPos := pos('<img src=''', Line) + 10; if BeginPos > 10 then begin // EndPos := pos(' alt=', Line)-2; EndPos := pos(' alt=', Line)-1; // Value := copy(Line, BeginPos, EndPos - BeginPos); Value := copy(Line, BeginPos, EndPos - BeginPos); TomString:= 'http://www.ofdb.de/'+Value; //Input('OFDb', TomString, MovieName) GetPicture(TomString); end; end; // Original & Translated Title LineNr := FindLine('Originaltitel:</font>', Page, 0); if LineNr > -1 then begin LineNr:= LineNr+2; Line := Page.GetString(LineNr); BeginPos := pos('class="Daten"><b>', Line) + 17; EndPos := pos('</b></font>', Line); Value := copy(Line, BeginPos, EndPos - BeginPos); SetField(fieldOriginalTitle, Value); LineNr := Findline('sans-serif" size="3"><b>', Page, 0); if LineNr > -1 then begin Line:= Page.GetString(LineNr); BeginPos := pos('sans-serif" size="3"><b>',Line) +24; Endpos := pos('</b></font></td>',Line); Value := copy(Line,BeginPos, Endpos-Beginpos); SetField(fieldTranslatedTitle,Value); end; end; //Country LineNr := Findline('Herstellungsland:', Page, 0); if LineNr > -1 then begin LineNr := LineNr+3; Line:= Page.GetString(LineNr); Delete(Line, 1, pos('<a',Line)-1); BeginPos := pos('">',Line) +2; Endpos := pos('</a><br>',Line); Value := copy(Line,BeginPos, Endpos-Beginpos); SetField(fieldCountry, Value); end; // Year LineNr := Findline('Erscheinungsjahr:', Page, 0); if LineNr > -1 then begin LineNr := LineNr+3; Line:= Page.GetString(LineNr); Delete(Line, 1, pos('<a',Line)-1); BeginPos := pos('">',Line) +2; Endpos := pos('</a></b>',Line); Value := copy(Line,BeginPos, Endpos-Beginpos); SetField(fieldYear, Value); end; // Category LineNr := Findline('Genre(s):', Page, 0); if LineNr > -1 then begin Value:= ''; LineNr := LineNr+2; Line:= Page.GetString(LineNr); repeat Delete(Line, 1, pos('<a',Line)-1); BeginPos := pos('">', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos +1 ); Temp := copy(Line, 1, pos('</a><br>', Line)-1 ); Value:= Value+', '+ Temp ; end; until (BeginPos < 1); Value:= copy(Value, 3,length(Value)-1); SetField(fieldCategory, Value); end; // Actors LineNr := Findline('Darsteller', Page, 0); if LineNr > -1 then begin LineNr := LineNr+3; Line:= Page.GetString(LineNr); if pos('[mehr]', Line) > 0 then begin BeginPos := pos('<a href="view.php?page=film',Line) +9; Endpos := pos('">[mehr]</a>',Line); Value := copy(Line,BeginPos, Endpos-Beginpos); GetActors(Value); end else begin Value:= ''; repeat Delete(Line, 1, pos('<a',Line)-1); BeginPos := pos('">', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos +1 ); Temp := copy(Line, 1, pos('</a><br>', Line)-1 ); Value:= Value+', '+ Temp ; end; until (BeginPos < 1); Value:= copy(Value, 3,length(Value)-1); SetField(fieldActors, Value); end; end; //Director LineNr := Findline('Regie', Page, 0); if LineNr > -1 then begin Value:= ''; LineNr := LineNr+3; Line:= Page.GetString(LineNr); repeat Delete(Line, 1, pos('<a',Line)-1); BeginPos := pos('">', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos +1 ); Temp := copy(Line, 1, pos('</a><br>', Line)-1 ); Value:= Value+', '+ Temp ; end; until (BeginPos < 1); Value:= copy(Value, 3,length(Value)-1); SetField(fieldDirector, Value); end; //Description LineNr := Findline('<b>Inhalt:</b>', Page, 0); if LineNr > -1 then begin LineNr:=Findline('<a href="view.php?page=inhalt', Page,0); Line:= Page.GetString(LineNr); BeginPos := pos('<a href="view.php?page=inhalt', Line)+9; EndPos:= pos('"><b>[mehr]', Line); Value:=copy(Line, BeginPos, EndPos - BeginPos); GetDescriptions(Value); end; //Rating LineNr := Findline('<br>Note:', Page, 0); if LineNr > -1 then begin Line:= Page.GetString(LineNr); BeginPos := pos('<br>Note:',Line) +10; EndPos:= pos(' ',Line); Value := copy(Line,BeginPos, Endpos-Beginpos); Value := IntToStr(Round(StrToInt(StrGet(Line, BeginPos), 0) + (StrToInt(StrGet(Line, BeginPos +3), 0) /10))); SetField(fieldRating,Value ); end; //DisplayResults; end; procedure GetActors(Address: string); var Line,Temp, Value: string; LineNr: Integer; BeginPos, EndPos: Integer; Page: TStringList; begin Page := TStringList.Create; Page.Text := GetPage('http://www.ofdb.de/'+Address); LineNr := Findline('Darsteller', Page, 0); if LineNr > -1 then begin Value:= ''; LineNr := LineNr+3; Line:= Page.GetString(LineNr); repeat Delete(Line, 1, pos('<a',Line)-1); BeginPos := pos('">', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos +1 ); Temp := copy(Line, 1, pos('</a><br>', Line)-1 ); Value:= Value+', '+ Temp ; end; until (BeginPos < 1); Value:= copy(Value, 3,length(Value)-1); SetField(fieldActors, Value); end; Page.Free; end; procedure GetDescriptions(Address: string); var Line, Temp,Value: string; LineNr: Integer; BeginPos, EndPos: Integer; Page: TStringList; begin Temp:= ''; Page := TStringList.Create; Page.Text := GetPage('http://www.ofdb.de/' + Address); LineNr := FindLine('Eine Inhaltsangabe von', Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('</a></b><br><br>', Line) + 16; while (pos('<br />', Line) >0) do begin EndPos := pos('<br />', Line); Temp := Temp + copy(Line, BeginPos, EndPos - BeginPos); LineNr:=LineNr+1; Line:=Page.GetString(LineNr); BeginPos:=1; end; EndPos := pos('</font></p>', Line); Temp:= Temp + copy(Line, BeginPos, EndPos - BeginPos); Value:= Temp; SetField(fieldDescription, Value); end; Page.Free; end; procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer); var Line: string; MovieTitle, MovieAddress: string; StartPos, EndPos: Integer; begin Line := Page.GetString(LineNr); repeat StartPos := pos('<a href=''view.php?page=film&fid=', Line); if StartPos > 0 then begin Delete(Line, 1, StartPos + 8); MovieAddress := copy(Line, 1, pos('''>', Line) - 1); StartPos := pos('''>', Line) +2; MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos); HTMLRemoveTags(MovieTitle); PickTreeAdd(MovieTitle , 'http://www.ofdb.de/' + MovieAddress); end; until (StartPos < 1); end; begin if CheckVersion(3,5,0) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('OFDb', 'Bitte Titel eingeben :', MovieName) then begin AnalyzePage('http://www.ofdb.de/view.php?page=suchergebnis&SText='+UrlEncode(MovieName)+'&Kat=All'); end; end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.